var patterns = {
  // 严格密码：密码强度正则，最少6位，包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符
  strict_password: /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/,
  // 弱密码： 密码必须是字母或数字且长度大于6
  password: /^([\d]|[a-z]|[A-Z]){6,20}$/,
  // 验证字母数字下划线 1 到 20 位
  loginName: /^([\d]|[a-z]|[A-Z]|_){1,20}$/,
  // 正整数正则
  posPattern: /^\d+$/,
  // 负整数
  negPattern: /^-\d+$/,
  // 整数
  intPattern: /^-?\d+$/,
  // 邮箱验证
  email: /^[\w\d]{1,9}@[\w\d]{1,9}\.[\w]{2,3}$/,
  // 手机号验证
  phone: /^1[34578]\d{9}$/,
  // 身份证号
  idCard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
  // 包含中文
  conChinese: /[\u4E00-\u9FA5]/
}

var validtors = {
  // 手机号码验证
  validPhone: (rule, value, callback) => {
    if (!value) {
      return callback(new Error('手机号不能为空'))
    }
    if (!patterns.phone.test(value)) {
      return callback(new Error('请输入正确的手机号码'))
    } else {
      callback()
    }
  },
  // 简单密码验证
  validPassword: (rule, value, callback) => {
    if (!value) {
      return callback(new Error('密码不能为空'))
    }
    if (!patterns.password.test(value)) {
      return callback(new Error('密码必须是字母或数字且长度大于6'))
    } else {
      return callback()
    }
  },
  // 数字字母下划线验证
  loginName: (rule, value, callback) => {
    if (!value) {
      callback(new Error('登录名不能为空'))
    } else if (patterns.loginName.test(value)) {
      callback()
    } else {
      callback(new Error('登录名必须包含数字字母下划线'))
    }
  },
  // 身份证验证
  idCard: (rule, value, callback) => {
    if (!value) {
      callback(new Error('身份证号码不能为空'))
    } else if (patterns.idCard.test(value)) {
      callback()
    } else {
      callback(new Error('请输入正确的身份证号码'))
    }
  },
  // 邮箱验证
  email: (r, v, c) => {
    if (!v) {
      c(new Error('邮箱不能为空'))
    } else if (patterns.email.test(v)) {
      c()
    } else {
      c(new Error('请输入正确的邮箱格式'))
    }
  }
}

export default { patterns, validtors }
